home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 355 / source / modre-ex / m2demo2.mod < prev    next >
Text File  |  1990-02-02  |  6KB  |  204 lines

  1. MODULE M2demo;
  2.  
  3.   IMPORT SYSTEM;
  4.   IMPORT AESResources;
  5. FROM SYSTEM IMPORT ADR,ADDRESS;
  6. FROM GEMAESbase IMPORT Object,TEdInfo,FormStart,FormFinish,RTree,Arrow;
  7. FROM AESApplications IMPORT ApplInitialise,ApplExit;
  8. FROM AESForms IMPORT FormDialogue,FormDo,FormCenter;
  9. FROM AESObjects IMPORT ObjectDraw;
  10. FROM AESGraphics IMPORT GrafMouse;
  11.  
  12. FROM Strings IMPORT Assign;
  13. CONST
  14.       DEMO = 0 ;
  15.       DATA = 3 ;
  16.       INOK = 4 ;
  17.    OUTDATA = 1 ;
  18.     RESULT = 1 ;
  19.      OUTOK = 2 ;
  20. MODULE resource;
  21.  
  22. (*
  23.    Produced by ResourceMaker 0.10a
  24.    Copyright (c) 1985, 1986 Modula 2 Software Ltd.
  25.    Copyright (c) 1985, 1986 TDI Software Inc.
  26.  
  27.    Resource file version: 00000H
  28. *)
  29.  
  30.  
  31.   FROM SYSTEM IMPORT CODE, ADDRESS;
  32.  
  33.   FROM AESResources IMPORT ResourceObjectFix;
  34. EXPORT TreeAddr;
  35.   CONST
  36.     (* object types that don't have to be relocated *)
  37.     GBOX = 20;
  38.     GPROGDEF = 24;
  39.     GIBOX = 25;
  40.     GBOXCHAR = 27;
  41.  
  42.   CONST
  43.     (* resource file object counts and indicies *)
  44.     nrObjects = 8;  ixObjects = 226;
  45.     nrTrees = 2;  ixTrees = 418;
  46.     nrTedInfos = 2;  ixTedInfos = 170;
  47.  
  48.   (* resource file data inserted into CODE stream *)
  49.  
  50.   (*$S-,$P-,$T-*)
  51.   PROCEDURE RESOURCEDATA0;
  52.   BEGIN
  53.     CODE(00000H,000E2H,000AAH,000AAH,000AAH,000AAH,00024H,000AAH);
  54.     CODE(000AAH,001A2H,00008H,00002H,00002H,00000H,00000H,00000H);
  55.     CODE(00000H,001AAH,05468H,06973H,02069H,07320H,06120H,07361H);
  56.     CODE(06D70H,06C65H,02064H,0656DH,06F20H,06F66H,02064H,06961H);
  57.     CODE(06C6FH,06700H,07265H,06164H,0696EH,06700H,05F5FH,05F5FH);
  58.     CODE(05F5FH,05F5FH,05F5FH,0004EH,0616DH,0653AH,05F5FH,05F5FH);
  59.     CODE(05F5FH,05F5FH,05F5FH,00058H,05858H,05858H,05858H,05858H);
  60.     CODE(05800H,0676FH,0206FH,06E21H,0005FH,05F5FH,05F5FH,05F5FH);
  61.     CODE(05F5FH,05F00H,0596FH,07520H,07479H,07065H,0643AH,05F5FH);
  62.     CODE(05F5FH,05F5FH,05F5FH,05F5FH,00058H,05858H,05858H,05858H);
  63.     CODE(05858H,05800H,0446FH,06E65H,02100H,00000H,0004CH,00000H);
  64.     CODE(00057H,00000H,00067H,00003H,00006H,00000H,01180H,00000H);
  65.     CODE(000FFH,0000BH,00010H,00000H,00079H,00000H,00084H,00000H);
  66.     CODE(00099H,00003H,00006H,00000H,01180H,00000H,000FFH,0000BH);
  67.     CODE(00015H,0FFFFH,00001H,00004H,00014H,00000H,00010H,00002H);
  68.     CODE(01100H,00000H,00000H,00026H,0000BH,00002H,0FFFFH,0FFFFH);
  69.     CODE(0001CH,00000H,00000H,00000H,00024H,00004H,00002H,0001FH);
  70.     CODE(00001H,00003H,0FFFFH,0FFFFH,0001CH,00000H,00000H,00000H);
  71.     CODE(00044H,0000FH,00004H,00009H,00001H,00004H,0FFFFH,0FFFFH);
  72.     CODE(0001DH,00008H,00000H,00000H,000AAH,0000BH,00006H,0000FH);
  73.     CODE(00001H,00000H,0FFFFH,0FFFFH,0001AH,00025H,00000H,00000H);
  74.     CODE(00072H,0000EH,00008H,00008H,00001H,0FFFFH,00001H,00002H);
  75.     CODE(00014H,00000H,00010H,00002H,01100H,00000H,00000H,0001CH);
  76.     CODE(00009H,00002H,0FFFFH,0FFFFH,0001DH,00008H,00000H,00000H);
  77.     CODE(000C6H,00003H,00002H,00014H,00001H,00000H,0FFFFH,0FFFFH);
  78.     CODE(0001AH,00025H,00000H,00000H,000A4H,00008H,00005H,00008H);
  79.     CODE(00001H,00000H,000E2H,00000H,0015AH);
  80.   END RESOURCEDATA0;
  81.  
  82.  
  83. TYPE
  84.   OBJECT = RECORD
  85.              next, head: INTEGER;
  86.              tail, type: INTEGER;
  87.              flags, state: INTEGER;
  88.              spec: ADDRESS;
  89.              x, y: INTEGER;
  90.              width, height: INTEGER;
  91.            END;
  92.   TEDINFO = RECORD
  93.               ptext,
  94.               ptmplt,
  95.               pvalid: ADDRESS;
  96.               font, resvd1: INTEGER;
  97.               just, color: INTEGER;
  98.               resvd2, thickness: INTEGER;
  99.               txtlen, tmplen: INTEGER;
  100.             END;
  101. VAR
  102.   i: CARDINAL; o: INTEGER; x: ADDRESS;
  103.   TreeAddr: POINTER TO ARRAY [0..nrTrees-1] OF ADDRESS;
  104.   TedInfoAddr: POINTER TO ARRAY [0..nrTedInfos-1] OF TEDINFO;
  105.   ObjectAddr: POINTER TO ARRAY [0..nrObjects-1] OF OBJECT;
  106.  
  107. BEGIN
  108.   (* relocate tree indicies *)
  109.   x := ADDRESS(RESOURCEDATA0) + ixTrees;
  110.   TreeAddr := x;
  111.   FOR i := 0 TO nrTrees-1 DO
  112.     TreeAddr^[i] := TreeAddr^[i] + ADDRESS(RESOURCEDATA0); INC(x,4); 
  113.   END;
  114.   (* relocate ted infos *)
  115.   x := ADDRESS(RESOURCEDATA0) + ixTedInfos;
  116.   TedInfoAddr := x;
  117.   FOR i := 0 TO nrTedInfos-1 DO
  118.     WITH TedInfoAddr^[i] DO
  119.       ptext := ptext + ADDRESS(RESOURCEDATA0);
  120.       ptmplt := ptmplt + ADDRESS(RESOURCEDATA0);
  121.       pvalid := pvalid + ADDRESS(RESOURCEDATA0);
  122.     END;
  123.   END;
  124.   (* relocate object specs *)
  125.   x := ADDRESS(RESOURCEDATA0) + ixObjects;
  126.   ObjectAddr := x;
  127.   FOR i := 0 TO nrObjects-1 DO
  128.     WITH ObjectAddr^[i] DO
  129.       IF (type # GBOX)  & (type # GPROGDEF) &
  130.          (type # GIBOX) & (type # GBOXCHAR) THEN
  131.         (* relocate against resource base *)
  132.         spec := spec + ADDRESS(RESOURCEDATA0);
  133.       END;
  134.       (* Fix up the scaling *)
  135.       ResourceObjectFix(ObjectAddr,i) ;  (*0.10a*)
  136.     END;
  137.   END;
  138. END resource;
  139.  
  140. TYPE
  141.     OP=POINTER TO ARRAY [0..100] OF Object;
  142.     TP=POINTER TO TEdInfo;
  143.     CP=POINTER TO ARRAY [0..100] OF CHAR;
  144. VAR
  145.    JUNK:INTEGER;
  146.    str:ARRAY [0..100] OF CHAR;
  147.    sp:CP;
  148.    data,outtree:OP;
  149.    x,y,w,h:INTEGER;
  150.  
  151. PROCEDURE ResourceLoad(a:ARRAY OF CHAR);
  152. BEGIN
  153. END ResourceLoad;
  154.  
  155. PROCEDURE ResourceGetAddr(a,b:INTEGER;VAR c:ADDRESS);
  156. BEGIN
  157.         c:=TreeAddr^[b];
  158. END ResourceGetAddr;
  159.  
  160. PROCEDURE gettext(TREE:OP;index:INTEGER;VAR ans:CP);
  161. VAR
  162.    ted:TP;
  163.    ob:Object;
  164.    CH:CP;
  165.  
  166. BEGIN
  167.      ob:=TREE^[index];
  168.      ted:=ob.spec;
  169.      CH:=ted^.ptext;
  170.      Assign(ans^,CH^);
  171. END gettext;
  172.  
  173. PROCEDURE puttext(tree:OP;index:INTEGER;str:CP);
  174. VAR
  175.     ted:TP;
  176.     CH:CP;
  177. BEGIN
  178.      ted:=tree^[index].spec;
  179.      CH:=ted^.ptext;
  180.      Assign(CH^,str^)
  181. END puttext;
  182.  
  183. BEGIN
  184.         JUNK:=ApplInitialise();
  185.         ResourceLoad("B:\M2DEMO.RSC");
  186.         ResourceGetAddr(RTree,DEMO,data);
  187.         GrafMouse(Arrow,0);
  188.         ResourceGetAddr(RTree,OUTDATA,outtree);
  189.         FormCenter(data,x,y,w,h);
  190.         FormDialogue(FormStart,0,0,0,0,x,y,w,h);
  191.         ObjectDraw(data,0,4,x,y,w,h);
  192.         JUNK:=FormDo(data,DATA);
  193.         sp:=ADR(str);
  194.         gettext(data,DATA,sp);
  195.         FormDialogue(FormFinish,0,0,0,0,x,y,w,h);
  196.         FormCenter(outtree,x,y,w,h);
  197.         FormDialogue(FormStart,0,0,0,0,x,y,w,h);
  198.         puttext(outtree,OUTDATA,sp);
  199.         ObjectDraw(outtree,0,4,x,y,w,h);
  200.         JUNK:=FormDo(outtree,0);
  201.         FormDialogue(FormFinish,0,0,0,0,x,y,w,h);
  202.         ApplExit;
  203. END M2demo.
  204.